/*Copyright (C) 2009 Careil Baptiste

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include "Clock.h"
#include <stdio.h>

#ifdef WIN32
#include <windows.h>

double GetWin32Time()
{
	return (double)(GetTickCount()) / 1000.;
}

#else
#include <sys/timeb.h>

double GetUnixTime()
{
	double retVal = 0.0;
	struct timeb tp;
	if (ftime(&tp) == -1)
	{
		perror("CSLP: ftime error.\n");
	}
	else
	{
		retVal = (double)(tp.time) + (double)(tp.millitm) / 1000.;
	}
	return retVal;
}
#endif

void DLL_IMPEXP CSLP_ResetClock(CSLP_CLOCK* clk)
{
	if (clk == NULL)
		return;

	#ifdef WIN32
	*clk = GetWin32Time();
	#else
	*clk = GetUnixTime();
	#endif
}

double DLL_IMPEXP CSLP_GetElapsedTime(CSLP_CLOCK clk)
{
	#ifdef WIN32
	return GetWin32Time() - clk;
	#else
	return GetUnixTime() - clk;
	#endif
}

